import axios from '../services/http.js' // 在axios基础上封装的网络请求
import base from '@/common/services/base';
import { getCookie } from '@/utils/cookiesUtil.js'
const apiUrl = base.test;
var jweixin = require('jweixin-module');

export default {
    //判断是否在微信中  
    isWechat: function() {
        var ua = window.navigator.userAgent.toLowerCase();
        if (ua.match(/micromessenger/i) == 'micromessenger') {
            // console.log('是微信客户端')
            return true;
        } else {
            // console.log('不是微信客户端')
            return false;
        }
    },
    //初始化sdk配置  
    initJssdkShare: function(callback, url, data) {
        // 服务端进行签名 ，可使用uni.request替换。 签名算法请看文档  
		axios.get(`${apiUrl}/weixin/jssdkSign/getJssdkSignInfo?curUrl=${url}`).then(res => {
			if (res) {
				jweixin.config({
					debug: true,
					appId: res.appId,
					timestamp: res.timestamp,
					nonceStr: res.nonceStr,
					signature: res.signature,
					jsApiList: [
						'checkJsApi',
						'onMenuShareTimeline',
						'onMenuShareAppMessage',
						'onMenuShareQQ',
						'onMenuShareWeibo',
					]
				});
				//配置完成后，再执行分享等功能  
				if (callback) {
					callback(data);
				}
			}	
		})
    },
	initJssdkPlay: function(callback, url){
		axios.get(`${apiUrl}/weixin/jssdkSign/getJssdkSignInfo?curUrl=${url}`).then(res => {
			if(res){
			    jweixin.config({
			        // debug: true,
			        appId: res.appId,
			        timestamp: res.timestamp,
			        nonceStr: res.nonceStr,
			        signature: res.signature,
			        jsApiList: [
			            'chooseWXPay',
			        ]
			    });
			    //配置完成后，再执等功能  
			    if (callback) {
			        callback(res);
			    }
			}
		})
    },
    initJssdk:function(callback, url){
		axios({
			url: `${apiUrl}/weixin/jssdkSign/getJssdkSignInfo`,
			params: {
			  curUrl: url
			},
			method: 'get',
		}).then(res => {
			if(res.result){
			    jweixin.config({
			        // debug: true,
			        appId: res.result.appId,
			        timestamp: res.result.timestamp,
			        nonceStr: res.result.nonceStr,
			        signature: res.result.signature,
			        jsApiList: [
			            'checkJsApi',
			            'getLocation',
						'openLocation',
			        ]
			    });
			    //配置完成后，再执行分享等功能  
			    if (callback) {
			        callback(res.result);
			    }
			}
		})
    },
    //在需要自定义分享的页面中调用  
    share: function(url, data) {
        url = url ? url : window.location.href;
        if (!this.isWechat()) {
            return;
        }
		console.log('url,data',url,data)
		debugger;
        //每次都需要重新初始化配置，才可以进行分享  
        this.initJssdkShare((data) => {
            jweixin.ready(() => {
     //            var shareData = {
     //                title: data.title,
     //                desc: 
     //                link: url.indexOf('?') !== -1  ? url + '&parentId=' + getCookie('baseUserId') : url + '?parentId=' + getCookie('baseUserId'),
     //                imgUrl: data.img,
     //                success: function(res) {
     //                    //用户点击分享后的回调，这里可以进行统计，例如分享送金币之类的  
					// 	console.log('res:', res);
     //                },
     //                cancel: function(error) {
					// 	console.log('error出错了～～:', error);
					// }
     //            };
                // //分享给朋友接口  
                // jweixin.onMenuShareAppMessage(shareData);
                // //分享到朋友圈接口  
                // jweixin.onMenuShareTimeline(shareData);
				jweixin.onMenuShareAppMessage({
					title: data.title,
					desc: data.desc,
					imgUrl: 'http://www.nineunity.com/upload/20190105/jpg/d0afddf8-3804-45fd-b125-03713dea36eb.jpg',
					type: 'link', 
					dataUrl: '',
					success: function () { 
					   console.log(' onMenuShareAppMessage 分享成功～');
					},
					cancel: function () { 
						console.log(' onMenuShareAppMessage 分享失败');
					}
				});
				//分享到朋友圈
				jweixin.onMenuShareTimeline({
					title: data.title,
					desc: data.desc,
					imgUrl: 'http://www.nineunity.com/upload/20190105/jpg/d0afddf8-3804-45fd-b125-03713dea36eb.jpg',
					success: function () { 
					   console.log(' onMenuShareTimeline 分享成功～');
					},
				});
            });
        }, url, data);
    },
    //在需要定位页面调用
    location: function(callback, url) {
		 console.log('url绅士手：', url)
		 url = url ? url : window.location.href;
		 console.log('url：', url, window.location.href)
        if (!this.isWechat()) {
            console.log('不是微信客户端')
            return;
        }
        console.info('定位')
        this.initJssdk(function(res) {
            jweixin.ready(function() {
                console.info('定位ready')
                jweixin.getLocation({
                    type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
                    success: function (res) {
                        // console.log(res);
                        callback(res)
                    },
                    fail:function(res){
                        console.log(res)
                    },
                });
            });
        }, url);
    },
	// 定位不准确的时候，用户手动获取定位
	openLocation: function(callback) {
		if (!this.isWechat()) {
		    console.log('不是微信客户端')
		    return;
		}
		console.info('打开地图获取定位')
		this.initJssdk(function(res) {
		    jweixin.ready(function() {
		        console.info('定位ready')
		        jweixin.openLocation({
		            latitude: 0, // 纬度，浮点数，范围为90 ~ -90
		            longitude: 0, // 经度，浮点数，范围为180 ~ -180。
		            name: '', // 位置名
		            address: '', // 地址详情说明
		            scale: 1, // 地图缩放级别,整形值,范围从1~28。默认为最大
		            infoUrl: '', // 在查看位置界面底部显示的超链接,可点击跳转
		            success: function (res) {
		            },
		            fail:function(res){
		                console.log(res)
		            },
		        });
		    });
		});
	},
	// 微信支付
	wxPay: function(callback, errorback, url, orderId) {
		 url = url ? url : window.location.href;
		this.initJssdkPlay(function(res) {
			axios.get(`${apiUrl}/wxpay/apppublicapi/wechatPay?orderId=${orderId}`).then(res => {
				if (res) {
					jweixin.ready(function () {
						jweixin.chooseWXPay({
							timestamp: res.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
							nonceStr: res.nonceStr, // 支付签名随机串，不长于 32 位
							package: res.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
							signType: res.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
							paySign: res.paySign, // 支付签名
							success: function (result) {
								console.log('调用支付的接口成功了：', result, orderId, res.paySign);
								// 支付成功后的回调函数
								axios.post(`${apiUrl}/wxpay/appauthapi/clientPayReturn`, {
									orderId,
									paySign: res.paySign, 
									payStatus: 2
								}).then(res => {
									// 前端支付后，主动通知后台支付状态	
									callback(res)
								})
							},
							fail: function (error) {
								console.log('调用支付的接口失败了：', error);
								// 支付失败之后回调的函数
								axios.post(`${apiUrl}/wxpay/appauthapi/clientPayReturn`, {
									orderId,
									paySign: res.paySign, 
									payStatus: 3
								}).then(res => {
									errorback();
								})
							}
						});
					})
				}	
			}).catch(error => {
				console.log('支付失败的报错拦截:', error)
			})
		}, url)
	}
}